﻿<!DOCTYPE html>
<html class="theme theme-white">
<head>
<meta charset="utf-8">
<title>spring boot学习---常用注解</title>
<link href="https://www.zybuluo.com/static/assets/template-theme-white.css" rel="stylesheet" media="screen">
<style type="text/css">

#wmd-preview h1  {
    color: #0077bb; /* 将标题改为蓝色 */
}</style>
</head>
<body class="theme theme-white">
<div id="wmd-preview" class="wmd-preview wmd-preview-full-reader"><div class="md-section-divider"></div><div class="md-section-divider"></div><h1 data-anchor-id="sred" id="spring-boot学习-常用注解">spring boot学习---常用注解</h1><div class="md-section-divider"></div><h2 data-anchor-id="o3kg" id="目录">目录</h2><ul data-anchor-id="cj9n">
<li>全局注解</li>
<li>控制层</li>
<li>服务/资源层</li>
<li>AOP注释</li>
</ul><div class="md-section-divider"></div><h2 data-anchor-id="ziwt" id="1-全局注解">1. 全局注解</h2><table data-anchor-id="c3b8" class="table table-striped-white table-bordered">
<thead>
<tr>
 <th>注解</th>
 <th>说明</th>
</tr>
</thead>
<tbody><tr>
 <td>SpringBootApplication</td>
 <td>是组合注解，包含了@SpringBootConfiguration、@EnableAutoConfiguration和@ComponentScan</td>
</tr>
<tr>
 <td>SpringBootConfiguration</td>
 <td>继承自@Configuration，会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到srping容器中，并且实例名就是方法名</td>
</tr>
<tr>
 <td>EnableAutoConfiguration</td>
 <td>这个注解就是springboot能自动进行配置的魔法所在了。主要是通过此注解，能所有符合自动配置条件的bean的定义加载到spring容器中，比如根据spring-boot-starter-web ，来判断你的项目是否需要添加了webmvc和tomcat，就会自动的帮你配置web项目中所需要的默认配置</td>
</tr>
<tr>
 <td>ComponentScan</td>
 <td>会扫描当前包及其子包下被@Component，@Controller，@Service，@Repository等注解标记的类并纳入到spring容器中进行管理</td>
</tr>
<tr>
 <td>ConfigurationProperties</td>
 <td>读取自定义的properties的方法</td>
</tr>
<tr>
 <td>Configuration</td>
 <td>指出该类是 Bean 配置的信息源，相当于XML中的，一般加在主类上</td>
</tr>
<tr>
 <td>Bean</td>
 <td>相当于XML中的,放在方法的上面，而不是类，意思是产生一个bean,并交给spring管理</td>
</tr>
<tr>
 <td>Profiles</td>
 <td>提供了一种隔离应用程序配置的方式，并让这些配置只能在特定的环境下生效</td>
</tr>
</tbody></table><div class="md-section-divider"></div><h2 data-anchor-id="gk57" id="2-控制层">2. 控制层</h2><table data-anchor-id="oj25" class="table table-striped-white table-bordered">
<thead>
<tr>
 <th>注解</th>
 <th>说明</th>
</tr>
</thead>
<tbody><tr>
 <td>RestController</td>
 <td>是@ResponseBody和@Controller组合注解，用于标注控制层组件，返回json格式</td>
</tr>
<tr>
 <td>Controller</td>
 <td>用于标注控制层组件</td>
</tr>
<tr>
 <td>RequestMapping</td>
 <td>一个用来处理请求地址映射的注解，可用于类或方法上。用于类上，表示类中的所有响应请求的方法都是以该地址作为父路径，衍生出来的还有@GetMapping、@PostMapping、@PutMapping、@DeleteMapping、@PatchMapping</td>
</tr>
<tr>
 <td>RequestBody</td>
 <td>允许request的参数在reqeust体中，常常结合前端POST请求，进行前后端交互</td>
</tr>
<tr>
 <td>ResponseBody</td>
 <td>支持将的参数在reqeust体中，通常返回json格式给前端</td>
</tr>
<tr>
 <td>PathVariable</td>
 <td>用来接收参数,如/path/001,可接收001作为参数</td>
</tr>
<tr>
 <td>RequestParam</td>
 <td>用来接收URL中的参数,如/param?id=001,可接收001作为参数</td>
</tr>
<tr>
 <td>RequestAttribute</td>
 <td>用于访问由过滤器或拦截器创建的、预先存在的请求属性，效果等同与request.getAttrbute()</td>
</tr>
<tr>
 <td>ModelAttribute</td>
 <td>主要是绑定请求参数到指定对象上。此注解可被用于方法、参数上</td>
</tr>
</tbody></table><div class="md-section-divider"></div><h2 data-anchor-id="mf4o" id="3-服务资源层">3. 服务/资源层</h2><table data-anchor-id="5d7i" class="table table-striped-white table-bordered">
<thead>
<tr>
 <th>注解</th>
 <th>说明</th>
</tr>
</thead>
<tbody><tr>
 <td>Component</td>
 <td>泛指组件，当组件不好归类的时候，我们可以使用这个注解进行标注</td>
</tr>
<tr>
 <td>Service</td>
 <td>用于标注业务层组件</td>
</tr>
<tr>
 <td>AutoWired</td>
 <td>byType方式。把配置好的Bean拿来用，完成属性、方法的组装，它可以对类成员变量、方法及构造函数进行标注，完成自动装配的工作</td>
</tr>
<tr>
 <td>Qualifier</td>
 <td>当有多个同一类型的Bean时，可以用@Qualifier("name")来指定。与@Autowired配合使用</td>
</tr>
<tr>
 <td>Resource</td>
 <td>没有括号内内容的话，默认byName。与@Autowired干类似的事</td>
</tr>
<tr>
 <td>Repository</td>
 <td>用于标注数据访问组件，即DAO组件</td>
</tr>
<tr>
 <td>Transactional</td>
 <td>事务注解</td>
</tr>
</tbody></table><div class="md-section-divider"></div><h2 data-anchor-id="ubt8" id="4-aop注解">4。 AOP注解</h2><table data-anchor-id="real" class="table table-striped-white table-bordered">
<thead>
<tr>
 <th>注解</th>
 <th>说明</th>
</tr>
</thead>
<tbody><tr>
 <td>Aspect</td>
 <td>把当前类声明为切面类</td>
</tr>
<tr>
 <td>Pointcut</td>
 <td>指定切入点表达式</td>
</tr>
<tr>
 <td>Before</td>
 <td>把当前方法看成是前置通知</td>
</tr>
<tr>
 <td>Around</td>
 <td>把当前方法看成是环绕通知</td>
</tr>
<tr>
 <td>After</td>
 <td>把当前方法看成是始终通知</td>
</tr>
<tr>
 <td>AfterReturning</td>
 <td>把当前方法看成是后置通知</td>
</tr>
<tr>
 <td>AfterThrowing</td>
 <td>把当前方法看成是异常通知</td>
</tr>
</tbody></table><hr></div>
</body>
</html>